﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

public partial class Default5 : System.Web.UI.Page
{
    int total = 0;
    int Puntos = 0; //Puntos actuales del usuario
    int PuntosRestados = 0;
    float desc = 1;
    bool compra;
    protected void CargarCompras()
    {
        Dictionary<string, int> carrito;
        carrito = (Dictionary<string, int>)Session["Carrito"];
        if (carrito != null)
        {
            lstCompras.Items.Clear();
            int parcial=0;
            int n1, n2;
            string[] partes = new string[2];
            foreach (KeyValuePair<string, int> fila in carrito)
            {
                ListItem registro = new ListItem(fila.Key.ToString() + " x" + fila.Value.ToString(), fila.Key.ToString());
                lstCompras.Items.Add(registro);
                partes = (fila.Key.ToString()).Split('$');  //aca divido partes en 2 el string a partir del caracter $
                partes[1].Trim();
                n1 = int.Parse(partes[1]);
                n2 = fila.Value;
                parcial = n1 * n2;
                total += parcial;
            }
            if (rbtn10.Checked == true) desc = (float)0.9;
            if (rbtn20.Checked == true) desc = (float)0.8;
            if (rbtn30.Checked == true) desc = (float)0.7;
            Session["Carrito"] = carrito;
            total = (int) (total * desc);
            lblResultado.Text = total.ToString();
        }
    }
    
    protected void Page_Load(object sender, EventArgs e)
    {
        if (this.Session["usuario"] != null)
        {
            SqlConnection connection = new SqlConnection();
            SqlCommand SQLcmd = new SqlCommand();
            connection.ConnectionString = "Data Source=localhost;Initial Catalog=Final;Integrated Security=True";
            SQLcmd.Connection = connection;
            SQLcmd.CommandType = CommandType.Text;
            SQLcmd.CommandText = "SELECT Puntos FROM PuntosXUsuario WHERE PuntosXUsuario.IDUsuario = '" + this.Session["usuario"].ToString() + "'";
            connection.Open();
            SqlDataReader dr = SQLcmd.ExecuteReader();
            while (dr.Read())
            {
                lblPuntos.Text = dr[0].ToString().Trim();
            }
            connection.Close();
            Puntos = int.Parse(lblPuntos.Text);
        }
        compra = true;
        if(!IsPostBack) rbtn0.Checked = true;
        CargarCompras();        
    }
    protected void btnConfirmar_Click(object sender, EventArgs e)
    {
        if (compra)
        {
            GestionUsuarios gusuarios = new GestionUsuarios();
            int PuntosSumados = 0;
            if (rbtn10.Checked == true) PuntosRestados = 100;
            if (rbtn20.Checked == true) PuntosRestados = 250;
            if (rbtn30.Checked == true) PuntosRestados = 400;
            PuntosSumados = total / 50;
            lblExito.Visible = true;
            lblExito0.Visible = true;
            lblPuntosSumados.Text = PuntosSumados.ToString();
            lblPuntosSumados.Visible = true;
            lblExito1.Visible = true;
            Puntos = Puntos + PuntosSumados - PuntosRestados;
            gusuarios.SumarPuntos(Puntos, this.Session["usuario"].ToString());
            this.Master.VaciarCarrito();
        }
    }
    protected void rbtn10_CheckedChanged(object sender, EventArgs e)
    {
        if (rbtn10.Checked == true)
        {
            PuntosRestados = 100;
            if (Puntos >= PuntosRestados)
            {
                desc = (float)0.9;
                total = (int)(total * desc);
                lblResultado.Text = total.ToString();
            }
            else
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "Error de Compra", "<script type = \"text/javascript\">alert('" + "Los puntos no son suficentes" + "');</script>");
                rbtn10.Checked = false;
                compra = false;
            }
        }
    }
    protected void rbtn20_CheckedChanged(object sender, EventArgs e)
    {
        if (rbtn20.Checked == true)
        {
            PuntosRestados = 250;
            if (Puntos >= PuntosRestados)
            {
                desc = (float)0.8;
                total = (int)(total * desc);
                lblResultado.Text = total.ToString();
            }
            else
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "Error de Compra", "<script type = \"text/javascript\">alert('" + "Los puntos no son suficentes" + "');</script>");
                rbtn20.Checked = false;
                compra = false;
            }
        }
    }
    protected void rbtn30_CheckedChanged(object sender, EventArgs e)
    {
        if (rbtn30.Checked == true)
        {
            PuntosRestados = 400;
            if (Puntos >= PuntosRestados)
            {
                desc = (float)0.7;
                total = (int)(total * desc);
                lblResultado.Text = total.ToString();
            }
            else
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "Error de Compra", "<script type = \"text/javascript\">alert('" + "Los puntos no son suficentes" + "');</script>");
                rbtn30.Checked = false;
                compra = false;
            }
        }
    }
    protected void rbtn0_CheckedChanged(object sender, EventArgs e)
    {
        if (rbtn0.Checked==true)
        {
            desc = 1;
            total = (int)(total * desc);
            lblResultado.Text = total.ToString();
        }     
    }
}